import java.util.ArrayList;  
import java.util.List;  
  
public class ExternalMemory {  
    private List<Block> blocks; // 存储块的列表  
  
    public ExternalMemory() {  
        blocks = new ArrayList<>();
        for(int i = 0;i<5;i++) {
            Block block = new Block(i*100,100);
            blocks.add(block);

        }
    }
  
    // 分配外存空间  
    public boolean allocate(int size) {  
        for (Block block : blocks) {  
            if (block.getSize() >= size) {  
                // 找到一块足够大的存储块，将其地址返回给请求者使用  
                return true; // 成功分配  
            }  
        }  
        // 没有足够的存储块可以分配，返回false表示分配失败  
        return false;  
    }  
  
    // 回收外存空间  
    public void deallocate(int address, int size) {
        for (Block block : blocks) {  
            if (block.getAddress() == address && block.getSize() == size) {  
                // 找到需要回收的存储块，将其从列表中移除表示回收成功
                System.out.println("回收成功");
                blocks.remove(block);  
                return; // 找到后即停止循环，继续处理下一个需要回收的存储块（如果有的话）
            }  
        }
        System.out.println("暂无回收");
    }  
}